//////////////////////////////////////////////////////////////////////////
#pragma once


//////////////////////////////////////////////////////////////////////////
#include <RocketLua/RocketLua.hpp>


namespace Rocket
{
	namespace Core
	{
		namespace Lua
		{
			//////////////////////////////////////////////////////////////////////////
			class ROCKETLUA_EXPORT Vector2i
			{
			public:
				Vector2i();
				Vector2i( int32_t x, int32_t y );

				int32_t				X() const;
				void				X( int32_t x );
				int32_t				Y() const;
				void				Y( int32_t y );

				Vector2i&			Set( int32_t x, int32_t y );

				bool				operator == ( const Vector2i& rhs ) const;

				Vector2i			Negate() const;

				Vector2i			operator +( const Vector2i& rhs ) const;
				Vector2i			operator -( const Vector2i& rhs ) const;
				Vector2i			operator *( int32_t rhs ) const;
				Vector2i			operator /( int32_t rhs ) const;

				float				Magnitude() const;

				static void			Register( lua_State* );

			private:
				int32_t				mX;
				int32_t				mY;
			};
		}
	}
}
